package com.cj.minio.service;

import io.minio.Result;
import io.minio.http.Method;
import io.minio.messages.Bucket;
import io.minio.messages.Item;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @Author cheng jun
 * @Description:
 * @Date 2021/9/20 15:46
 */
public interface MinioService {

    /**
     * 文件上传
     * @param file
     * @return
     */
    public String upload(MultipartFile file);

    /**
     * 删除一个对象
     * @param bucketName
     * @param objectName
     * @return
     */
    public boolean removeObject(String bucketName, String objectName);

    /**
     * 获取上传文件的url
     * @param objectName
     * @param time
     * @param timeUnit
     * @return
     */
    public String getPolicyUrl(String objectName, int time, TimeUnit timeUnit);

    /**
     * 检查存储桶是否存在
     * @param bucketName
     * @return
     */
    public boolean bucketExists(String bucketName);

    /**
     *创建存储桶
     * @param bucketName
     * @return
     */
    public boolean makeBucket(String bucketName);

    /**
     * 列出所有存储桶
     * @return
     */
    public List<Bucket> listBuckets();

    /**
     * 列出所有存储桶名称
     * @return
     */
    public List<String> listBucketNames();

    /**
     * 列出存储桶中的所有对象
     * @param bucketName
     * @return
     */
    public Iterable<Result<Item>> listObjects(String bucketName);

    /**
     * 列出存储桶中的所有对象名称
     * @param bucketName
     * @return
     */
    public List<String> listObjectNames(String bucketName);

}
